GitLab CI/CD Back-end en DigitalOcean
Pipeline (.gitlab-ci.yml)
Fuentes:
¿Cómo empezar?
Dirígete a Build > Pipelines
.
¿Qué es un pipeline en GitLab?
Los pipelines en GitLab son flujos de trabajo automatizados que facilitan la integración continua y la entrega continua de software.
Ejemplo básico
Aquí se muestra un archivo básico de configuración que describe los procesos y los niveles en los que se ejecutan. Los estados escogidos son:
- build
- test
- deploy
La estructura del código se compone de varias partes:
- El nombre del estado (por ejemplo,
build-job
). - El nivel en el que se va a ejecutar (build, test, deploy).
- Acciones a realizar: Puedes agregar un
before_script
oscript
.before_script
se ejecuta antes descript
, como por ejemplo conectarse por SSH y luego hacer pull.
Cada estado se ejecuta en orden, siempre que todos los anteriores hayan pasado correctamente. Como se muestra en la imagen, aparece un #id : nombre del estado
.
# Lista de etapas para los trabajos, y su orden de ejecución
stages:
- build
- test
- deploy
# Este trabajo se ejecuta en la etapa de construcción, que se ejecuta primero.
build-job:
stage: build
before_script:
- echo "Antes de compilar haz esto"
script:
- echo "Compilando el código..."
- echo "Compilación completa."
unit-test-job: # Este trabajo se ejecuta en la etapa de prueba.
stage: test # Solo comienza cuando el trabajo en la etapa de construcción se completa con éxito.
script:
- echo "Ejecutando pruebas unitarias... Esto tomará aproximadamente 60 segundos."
- sleep 60
- echo "La cobertura de código es del 90%"
lint-test-job: # Este trabajo también se ejecuta en la etapa de prueba.
stage: test # Puede ejecutarse al mismo tiempo que `unit-test-job` (en paralelo).
script:
- echo "Linting code... Esto tomará aproximadamente 10 segundos."
- sleep 10
- echo "No se encontraron problemas de lint."
deploy-job: # Este trabajo se ejecuta en la etapa de despliegue.
stage: deploy # Solo se ejecuta cuando *ambos* trabajos en la etapa de prueba se completan con éxito.
environment: production
script:
- echo "Desplegando la aplicación..."
- echo "Aplicación desplegada con éxito."
Después de crear este archivo, se generará una entrada en el pipeline del commit que se hizo.
- Puedes ver los commits y cómo avanzan los pasos.
- Puedes ver qué se activa en cada commit.
- Si seleccionas algún
JOB
, verás que es posible observar qué hace en la terminal.
¿Cómo evitar que se mande a deploy dependiendo de la rama?
deploy-job:
stage: deploy
environment: production
script:
- echo "Desplegando la aplicación..."
- echo "Aplicación desplegada con éxito."
only:
- main # solo en la rama main
- merge_requests # cuando hagan merge a main también
Se hizo merge de develop a main en local y vemos que en los stages ya son los 3 y no 2.
Para aprender a configurar tu servidor en DigitalOcean
Sigue estos pasos detallados en Miro.